# RVC Controller SW — Requirements Specification

| 항목 | 내용 |
|------|------|
| 문서 번호 | RVC-REQ-001 |
| 버전 | v1.1 |
| 작성일 | 2026-05-19 |
| 작성자 | OOAD Team |
| 상태 | 초안 (Draft) |
  
---

## 변경 이력 (Change History)

| 버전 | 날짜 | 변경 내용 | 작성자 |
|------|------|-----------|--------|
| v1.0 | 2026-05-19 | 최초 작성 — FR / NFR 도출 | OOAD Team |
| v1.1 | 2026-05-19 | FR-EXT(미래 확장 요구사항) 및 범위 외 항목(Out of Scope) 섹션 삭제 | OOAD Team |

---

## 1. 개요 (Overview)

RVC(Robot Vacuum Cleaner)는 가정용 표면을 자동으로 청소·걸레질하는 장치이다.  
본 문서는 RVC Controller SW의 기능 요구사항(FR)과 비기능 요구사항(NFR)을 정의한다.  
HW 제어 세부 설계 및 구현은 범위에서 제외하며, **자동 청소 기능**에만 집중한다.

---

## 2. 용어 정의 (Glossary)

| 용어 | 정의 |
|------|------|
| RVC | Robot Vacuum Cleaner — 자동 청소 로봇 |
| 장애물(Obstacle) | 센서가 감지한 이동 불가 물체 |
| 먼지(Dust) | 먼지 센서가 감지한 이물질 |
| 청소 파워(Cleaning Power) | 흡입/걸레질 강도 |
| 전방/좌/우/후방 | RVC의 현재 이동 방향 기준 방위 |

---

## 3. 기능 요구사항 (Functional Requirements)

### FR 분류 체계

- **FR-MOV** : 이동(Movement) 관련
- **FR-SEN** : 센서(Sensor) 관련
- **FR-CLN** : 청소(Cleaning) 관련

> **Note:** 미래 확장 요구사항(FR-EXT)은 본 문서 범위에서 제외한다.

---

### FR-MOV : 이동 요구사항

| ID | 요구사항 | 우선순위 |
|----|----------|----------|
| FR-MOV-01 | RVC는 기본 상태에서 직진(전방)하며 청소한다. | Must |
| FR-MOV-02 | 전방에 장애물이 감지되면 이동을 즉시 정지한다. | Must |
| FR-MOV-03 | 전방 장애물 감지 후, 좌측 또는 우측으로 회전(방향 전환)한다. | Must |
| FR-MOV-04 | 방향 전환 완료 후 전진을 재개하며 청소를 계속한다. | Must |
| FR-MOV-05 | 전방·좌측·우측 모두 장애물이 감지되면 후방으로 이동한다. | Must |
| FR-MOV-06 | 후진 완료 후 좌측 또는 우측으로 회전(방향 전환)한다. | Must |
| FR-MOV-07 | 방향 전환 완료 후 전진을 재개하며 청소를 계속한다. | Must |

---

### FR-SEN : 센서 요구사항

| ID | 요구사항 | 우선순위 |
|----|----------|----------|
| FR-SEN-01 | RVC는 전방 장애물을 감지하는 센서를 사용한다. | Must |
| FR-SEN-02 | RVC는 좌측 장애물을 감지하는 센서를 사용한다. | Must |
| FR-SEN-03 | RVC는 우측 장애물을 감지하는 센서를 사용한다. | Must |
| FR-SEN-04 | RVC는 먼지를 감지하는 센서를 사용한다. | Must |
| FR-SEN-05 | 센서 데이터는 실시간으로 Controller에 전달되어야 한다. | Must |
| FR-SEN-06 | 시스템은 센서 추가 또는 교체에 대응할 수 있도록 설계되어야 한다. | Should |

---

### FR-CLN : 청소 요구사항

| ID | 요구사항 | 우선순위 |
|----|----------|----------|
| FR-CLN-01 | RVC는 이동 중 지속적으로 청소(흡입·걸레질)를 수행한다. | Must |
| FR-CLN-02 | 먼지가 감지되면 일정 시간 동안 청소 파워를 증가시킨다. | Must |
| FR-CLN-03 | 청소 파워 증가 시간이 경과하면 기본 청소 파워로 복귀한다. | Must |
| FR-CLN-04 | 장애물로 인해 정지 중에도 청소는 중단되지 않는다. (정지는 이동만 정지) | Should |

---

## 4. 비기능 요구사항 (Non-Functional Requirements)

### NFR 분류 체계

- **NFR-PER** : 성능(Performance)
- **NFR-REL** : 신뢰성(Reliability)
- **NFR-MNT** : 유지보수성(Maintainability)
- **NFR-EXT** : 확장성(Extensibility)
- **NFR-SAF** : 안전성(Safety)
- **NFR-PRT** : 이식성(Portability)

---

### NFR-PER : 성능

| ID | 요구사항 | 측정 기준 |
|----|----------|-----------|
| NFR-PER-01 | 센서 입력 감지 후 제어 명령 출력까지의 응답 시간은 100ms 이하이어야 한다. | 응답 시간 ≤ 100ms |
| NFR-PER-02 | 먼지 감지 후 청소 파워 변경은 즉각적(≤ 50ms)이어야 한다. | 파워 변경 시간 ≤ 50ms |
| NFR-PER-03 | Controller는 초당 최소 10회 이상 센서 상태를 폴링(polling)할 수 있어야 한다. | 폴링 주기 ≤ 100ms |

---

### NFR-REL : 신뢰성

| ID | 요구사항 | 측정 기준 |
|----|----------|-----------|
| NFR-REL-01 | 센서 오류 발생 시 RVC는 안전한 상태(정지)로 전환되어야 한다. | 센서 오류 → 정지 전환 |
| NFR-REL-02 | SW 오류로 인한 비정상 종료 없이 연속 8시간 이상 운영 가능해야 한다. | MTBF ≥ 8시간 |
| NFR-REL-03 | 장애물 감지 실패율은 1% 미만이어야 한다. | 오감지율 < 1% |

---

### NFR-MNT : 유지보수성

| ID | 요구사항 | 측정 기준 |
|----|----------|-----------|
| NFR-MNT-01 | 각 기능 모듈은 독립적으로 수정·교체 가능한 구조로 설계되어야 한다. | 모듈 결합도 Low |
| NFR-MNT-02 | 코드 변경 없이 설정 값(파워 증가 시간, 회전 각도 등)을 수정할 수 있어야 한다. | 설정 파일 분리 |
| NFR-MNT-03 | 시스템은 동작 이벤트 로그를 기록하여 디버깅에 활용할 수 있어야 한다. | 로그 수준 지원 |

---

### NFR-EXT : 확장성

| ID | 요구사항 | 측정 기준 |
|----|----------|-----------|
| NFR-EXT-01 | 새로운 센서 유형을 추가할 때 기존 코드 수정을 최소화해야 한다. (OCP 준수) | 기존 모듈 수정 없음 |
| NFR-EXT-02 | 모바일 앱 통신 모듈을 추가할 때 핵심 로직 변경이 없어야 한다. | 인터페이스 분리 |
| NFR-EXT-03 | ML 추론 모듈을 플러그인 형태로 통합할 수 있어야 한다. | 의존성 역전 적용 |

---

### NFR-SAF : 안전성

| ID | 요구사항 | 측정 기준 |
|----|----------|-----------|
| NFR-SAF-01 | 모든 방향에 장애물이 있는 경우 RVC는 완전 정지 상태를 유지해야 한다. | 강제 정지 동작 확인 |
| NFR-SAF-02 | 비정상 센서값(범위 초과 등)은 무시하고 이전 유효 상태를 유지해야 한다. | 입력 유효성 검사 |

---

### NFR-PRT : 이식성

| ID | 요구사항 | 측정 기준 |
|----|----------|-----------|
| NFR-PRT-01 | Controller SW의 핵심 로직은 특정 HW 플랫폼에 종속되지 않아야 한다. | HW 추상화 레이어 분리 |
| NFR-PRT-02 | HW 제어 인터페이스는 추상화된 API를 통해서만 접근해야 한다. | 직접 HW 접근 금지 |

---

## 5. 요구사항 추적 매트릭스 (Requirements Traceability — 예비)

| FR ID | 관련 NFR | 비고 |
|-------|----------|------|
| FR-SEN-01 ~ 04 | NFR-PER-01, NFR-REL-01, NFR-REL-03 | 센서 처리 성능·신뢰성 |
| FR-SEN-06 | NFR-EXT-01 | 센서 확장성 |
| FR-MOV-01 ~ 07 | NFR-PER-01, NFR-SAF-01 | 이동 제어 응답성·안전성 |
| FR-CLN-01 ~ 04 | NFR-PER-02 | 청소 파워 제어 |
